comment "GCC Options"

choice
	prompt "GCC compiler Version"
	default BR2_GCC_VERSION_ARC if BR2_arc
	default BR2_GCC_VERSION_OR1K if BR2_or1k
	default BR2_GCC_VERSION_6_X
	help
	  Select the version of gcc you wish to use.

config BR2_GCC_VERSION_ARC
	bool "gcc arc (6.x)"
	# Only supported architecture
	depends on BR2_arc
	select BR2_TOOLCHAIN_GCC_AT_LEAST_6

config BR2_GCC_VERSION_OR1K
	bool "gcc or1k (5.x)"
	# Only supported architecture
	depends on BR2_or1k
	select BR2_TOOLCHAIN_GCC_AT_LEAST_5

config BR2_GCC_VERSION_4_9_X
	bool "gcc 4.9.x"
	# Broken or unsupported architectures
	depends on !BR2_arc && !BR2_bfin && !BR2_or1k
	# Broken or unsupported ARM cores
	depends on !BR2_cortex_a17 && !BR2_cortex_a17_a7
	depends on !BR2_cortex_a72 && !BR2_cortex_a72_a53
	# Unsupported MIPS cores
	depends on !BR2_mips_interaptiv
	# Unsupported for MIPS R5
	depends on !BR2_MIPS_CPU_MIPS32R5 && !BR2_MIPS_CPU_MIPS64R5
	# Unsupported for MIPS R6
	depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6
	# musl microblaze unsupported
	depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_microblazeel || BR2_microblazebe))
	# musl ppc64 unsupported
	depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64le))
	# musl mips64 unsupported
	depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_mips64 || BR2_mips64el))
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

config BR2_GCC_VERSION_5_X
	bool "gcc 5.x"
	# Broken or unsupported architectures
	depends on !BR2_arc && !BR2_bfin && !BR2_or1k
	# Broken or unsupported ARM cores
	depends on !BR2_cortex_a57_a53 && !BR2_cortex_a72_a53
	# musl ppc64 unsupported
	depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64le))
	# Unsupported MIPS cores
	depends on !BR2_mips_interaptiv && !BR2_mips_m5150 && !BR2_mips_i6400
	# musl mips64 unsupported
	depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_mips64 || BR2_mips64el))
	select BR2_TOOLCHAIN_GCC_AT_LEAST_5

config BR2_GCC_VERSION_6_X
	bool "gcc 6.x"
	# Broken or unsupported architectures
	depends on !BR2_arc
	depends on !BR2_or1k
	select BR2_TOOLCHAIN_GCC_AT_LEAST_6

config BR2_GCC_VERSION_7_X
	bool "gcc 7.x"
	# Broken or unsupported architectures
	depends on !BR2_arc
	depends on !BR2_or1k
	select BR2_TOOLCHAIN_GCC_AT_LEAST_7

endchoice

# Indicates if GCC for architecture supports --with-{arch,cpu,..}  to
# set default CFLAGS, otherwise values will be used by toolchain
# wrapper.
config BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS
	bool
	default y if !BR2_bfin

config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
	bool
	default y

config BR2_GCC_VERSION
	string
	default "4.9.4"     if BR2_GCC_VERSION_4_9_X
	default "5.4.0"     if BR2_GCC_VERSION_5_X
	default "6.4.0"     if BR2_GCC_VERSION_6_X
	default "7.2.0"     if BR2_GCC_VERSION_7_X
	default "arc-2017.03" if BR2_GCC_VERSION_ARC
	default "musl-5.4.0" if BR2_GCC_VERSION_OR1K

config BR2_EXTRA_GCC_CONFIG_OPTIONS
	string "Additional gcc options"
	default ""
	help
	  Any additional gcc configure options you may want to
	  include. Those options are applied for all of the gcc
	  initial, gcc intermediate and gcc final passes.

config BR2_TOOLCHAIN_BUILDROOT_CXX
	bool "Enable C++ support"
	select BR2_INSTALL_LIBSTDCPP
	help
	  Enable this option if you want your toolchain to support the
	  C++ language and you want C++ libraries to be installed on
	  your target system.

comment "Fortran support needs a toolchain w/ wchar"
	depends on BR2_TOOLCHAIN_HAS_LIBQUADMATH
	depends on !BR2_USE_WCHAR # libquadmath

config BR2_TOOLCHAIN_BUILDROOT_FORTRAN
	bool "Enable Fortran support"
	# on architecture building libquadmath, wchar is required
	depends on !BR2_TOOLCHAIN_HAS_LIBQUADMATH || \
		(BR2_TOOLCHAIN_HAS_LIBQUADMATH && BR2_USE_WCHAR)
	select BR2_TOOLCHAIN_HAS_FORTRAN
	help
	  Enable this option if you want your toolchain to support the
	  Fortran language and you want Fortran libraries to be
	  installed on your target system.

config BR2_GCC_ENABLE_LTO
	bool "Enable compiler link-time-optimization support"
	select BR2_BINUTILS_ENABLE_LTO
	help
	  This option enables link-time optimization (LTO) support in
	  gcc.

config BR2_GCC_ENABLE_OPENMP
	bool "Enable compiler OpenMP support"
	depends on !BR2_PTHREADS_NONE && !BR2_arc && !BR2_microblaze
	help
	  Enable OpenMP support for the compiler

config BR2_GCC_ENABLE_LIBMUDFLAP
	bool "Enable libmudflap support"
	# There are architectures, or specific configurations for
	# which mudflap is not supported.
	depends on !BR2_ARM_INSTRUCTIONS_THUMB && !BR2_powerpc_SPE
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
	help
	  libmudflap is a gcc library used for the mudflap pointer
	  debugging functionality. It is only needed if you intend to
	  use the -fmudflap gcc flag.

	  See http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging and
	  the help of the gcc -fmudflap option for more details.

	  If you're unsure, leave this option disabled.

config BR2_GCC_ENABLE_GRAPHITE
	bool "Enable graphite support"
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5
	help
	  This option enables the graphite optimizations in the
	  compiler.

comment "graphite support needs gcc >= 5.x"
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5
